package thread;

/**
 * 线程的两种创建方式，结合使用匿名内部类方式完成
 */
public class ThreadDemo3 {
    public static void main(String[] args) {
        //第一种方式：继承Thread重写run方法
        Thread t1 = new Thread(){ // 注意Thread本身是不支持lambda表达式的，因为其中含有众多方法
            @Override
            public void run(){
                for (int i = 0; i < 1000; i++) {
                    System.out.println("你是谁啊");
                }
            }
        };

        //第二种方式：实现 Runnable 接口重写run方法
        Runnable r2 = new Runnable() { //注意这个接口看源代码，是Functional接口，就可以用lambda表达式
            @Override
            public void run() {
                for (int i = 0; i < 1000; i++) {
                    System.out.println("我是查水表的");
                }
            }
        };
        Thread t2 = new Thread(r2);



        //第二种的lambda表达式写法
        Runnable r3 = ()->{
            for (int i = 0; i < 1000; i++) {
                System.out.println("我是卖西瓜的");
            }
        };
        Thread t3 = new Thread(r3);


        Thread t4 = new Thread(()->{
            for (int i = 0; i < 1000; i++) {
                System.out.println("我是卖西瓜的");
            }
        });

        t1.start();
        t2.start();
        t3.start();
        t4.start();
    }
}
